#define CAMERA1_INDEX 0
#define CAMERA2_INDEX 1
#define CAMERA3_INDEX 2

#define KEY_CAM1 '1'
#define KEY_CAM2 '2'
#define KEY_CAM3 '3'

#define CAM_EYE_INDEX 0
#define CAM_CENTER_INDEX 1
#define CAM_UP_INDEX 2

#define CAM3_XX_MINUS 'j'
#define CAM3_XX_PLUS 'l'
#define CAM3_YY_MINUS 'k'
#define CAM3_YY_PLUS 'i'
#define CAM3_ZZ_MINUS 'a'
#define CAM3_ZZ_PLUS 'q'

extern int current_camera_index;

typedef struct sCamera {
	int index;
	void (*setCam) (void);
	char cam_id[10];
} Camera;

extern Camera cams[];

extern GLdouble cam2[3][3];
extern GLdouble cam3[3][3];

extern float obj_pos[];
extern float view_rotate[16];

void setCam1(void);
void setCam2(void);
void setCam3(void);

void showCamId(char *cam_id);